#ifndef DEVICEMANAGER_H
#define DEVICEMANAGER_H

#include "Device.h"
#include <vector>
#include <string>
#include <map>
#include <memory>

class DeviceManager {
public:
    static DeviceManager& getInstance();

    void addDevice(const Device& device);
    void removeDevice(int deviceId);
    Device* getDevice(int deviceId);
    void updateDeviceStatus(int deviceId, const std::string& newStatus);
    std::vector<Device*> getAllDevices() const;
    void batchEnableDevices(const std::vector<int>& deviceIds);
    void batchDisableDevices(const std::vector<int>& deviceIds);

private:
    DeviceManager();
    ~DeviceManager();

    std::map<int, std::unique_ptr<Device>> devices;
};

#endif
